--将这个代码转为插入的luaScript，使用+拼接的方式或者是``的形式
local tokenKey = KEYS[1]
local counterKey = KEYS[2]
local seatType = ARGV[1]

-- 1. 检查令牌Key是否存在,如果缓存中不存在则访问数据库一次
if redis.call('exists', tokenKey) == 0 then
return 'NEED_DB_CHECK_ONE'
end

-- 2. 获取当前令牌数量并扣减
local currentToken = tonumber(redis.call('get', tokenKey))
local newTokenCount = currentToken - 1

-- 3. 缓存中没有数据，则返回对应的错误类型
if newTokenCount < 0 then
    -- 令牌不足，返回对应的错误类型
    if seatType == '1' then
    return 'YDZ_CACHE_NOT_ENOUGH'
    else
    return 'EDZ_CACHE_NOT_ENOUGH'
    end
end

-- 4. 当缓存中有数据时，更新令牌数量
redis.call('set', tokenKey, newTokenCount)

-- 5. 处理计数器逻辑，计数器加1
local currentCounter = redis.call('incr', counterKey)
redis.call('expire', counterKey, 60)  -- 设置60秒过期时间

-- 6. 根据计数器值返回不同状态
if newTokenCount == 0 then
-- 最后一次扣减
return 'NEED_DB_CHECK_LAST'
elseif currentCounter  == 5 then
-- 将查询次数置为0，并每5次扣减需要更新数据库
redis.call('set', counterKey, 0)
return 'NEED_DB_CHECK_MORE'
else
-- 正常扣减成功
return 'CACHE_OK'
end